#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QDebug>				//用于调试打印输出的库
#include <QTimer>				//定时器的库
#include <QTime>				//时间的库
#include <QDate>				//日期的库
#include <QMessageBox>			//一个小的弹窗库
#include <qcustomplot.h>        //另一个波形绘制的库
#include <fft.h>                //快速傅里叶变换
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    int btn_serial_on=0;
    int btn_wave_on=0;
    int btn_fft_on=0;
    int btn_clearwave_on=0;
    int choose_index=0;
    int wave_size=1000;
    QByteArray buffer1;//将读到的数据放入缓冲区
    int hex_model_tx=0;
    int hex_model_rx=0;

private slots:
    void serialPortWrite();
    void on_pbStartDisplay_clicked();


    void on_pbsavewave_clicked();

    void on_pbclearwave_clicked();

    void on_lineEdit_buffersize_editingFinished();

    void on_pbSent_clicked();

    void on_pbClearsent_clicked();

    void on_openSerialports_clicked();

    void on_Clear_rx_clicked();

    void comRead();

    void timer_serial_rx();

    void timer_1000ms();

    void on_pbFFT_clicked();

    void on_setUnderbaudrate_activated(int index);

    void on_setWaveform_activated(int index);

    void on_setADCrate_activated(int index);

    void on_setDACrate_activated(int index);

    void on_setPortname_activated(int index);

    void on_flashport_clicked();


private:
    Ui::MainWindow *ui;
    //定时器
    QTimer *timer;
    QTimer *timer1;
    QTimer *timer2;
    // 串口对象
    QSerialPort *serialport;
    //fft对象
    fft *my_fft;
    //扫描串口
    void scanSerialPort();
    //初始化
    void serialPortInit();
    void reflash_com();


    QCPItemText *textLabel;//单击时提示信息框
    QCPItemLine *arrow;//提示信息的箭头
    QSharedPointer<QCPGraphDataContainer> waveData;
    QSharedPointer<QCPGraphDataContainer> fftData;
};
#endif // MAINWINDOW_H
